Micron Document
🎖️GitЯра🎖️


Displaying Raw • Download

.github/workflows/docs-release.yml gh-readonly-queue/main/pr-6745-07b5a8d1c1cfbab58c73f12c8fc7fc2770002893 (7bc67225) Text, 5.98 KB

Tff7b72nameTb4b4b4: Ta5d6ffDocsTa5d6ff Ta5d6ffRelease

T8b949e# Publishes release docs to the persistent gh-pages branch.
T8b949e#
T8b949e# Production tags (vX.Y.Z) own the site root and get a permanent /vX.Y.Z/ copy,
T8b949e# plus a refreshed Dokka reference at /api/.
T8b949e#
T8b949e# Open- and closed-testing tags (vX.Y.Z-open.N / vX.Y.Z-closed.N) publish a
T8b949e# per-tag snapshot at /vX.Y.Z-open.N/ only. They deliberately do NOT touch the
T8b949e# root or /api/: the root belongs to production releases, and /api/ is an
T8b949e# unversioned channel already kept current by docs-deploy.yml on every push to
T8b949e# main — rebuilding Dokka (~14 min) for each of the many prerelease tags in a
T8b949e# cycle would cost far more than it refreshes.
T8b949e#
T8b949e# These per-tag prerelease directories accumulate during a version cycle and are
T8b949e# reaped by post-release-cleanup.yml once the production vX.Y.Z tag ships.
T8b949e#
T8b949e# The /main/ snapshot is owned by docs-deploy.yml and is left untouched here.
T8b949e#
T8b949e# workflow_dispatch exists for backfill: run it against a tag ref to (re)publish
T8b949e# that version without cutting a new tag.

Tff7b72onTb4b4b4:
Tff7b72pushTb4b4b4:
Tff7b72tagsTb4b4b4:
T8b949e# Production plus the open/closed testing tracks. Internal builds are
T8b949e# excluded: they are tagged many times per cycle and are not a channel we
T8b949e# publish documentation for.
Tb4b4b4- Ta5d6ff'Ta5d6ffv*.*.*Ta5d6ff'
Tb4b4b4- Ta5d6ff'Ta5d6ff!v*-internal.*Ta5d6ff'

Tff7b72workflow_dispatchTb4b4b4:

Tff7b72permissionsTb4b4b4:
Tff7b72contentsTb4b4b4: Ta5d6ffwrite

Tff7b72concurrencyTb4b4b4:
Tff7b72groupTb4b4b4: Ta5d6ffpages
Tff7b72cancel-in-progressTb4b4b4: Ta5d6fffalse

Tff7b72jobsTb4b4b4:
Tff7b72publishTb4b4b4:
Tff7b72ifTb4b4b4: Ta5d6ffgithub.repositoryTa5d6ff Ta5d6ff==Ta5d6ff Ta5d6ff'meshtastic/Meshtastic-Android'
Tff7b72runs-onTb4b4b4: Ta5d6ffubuntu-24.04
Tff7b72timeout-minutesTb4b4b4: Ta5d6ff45
Tff7b72stepsTb4b4b4:
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffCheckout
Tff7b72usesTb4b4b4: Ta5d6ffactions/checkout@v7.0.1
Tff7b72withTb4b4b4:
Tff7b72submodulesTb4b4b4: Ta5d6fftrue
Tff7b72fetch-depthTb4b4b4: Ta5d6ff0

T8b949e# Resolves the tag into: the docs version label (which becomes the
T8b949e# published directory name) and whether this is a production release.
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffResolveTa5d6ff Ta5d6ffReleaseTa5d6ff Ta5d6ffChannel
Tff7b72idTb4b4b4: Ta5d6ffversion
Tff7b72runTb4b4b4: Tb4b4b4|
Tff7b72set -euo pipefail
Tff7b72case "$GITHUB_REF" in
Tff7b72refs/tags/*) TAG="${GITHUB_REF#refs/tags/}" ;;
Tff7b72*)
Tff7b72echo "This workflow must run against a release tag ref (got $GITHUB_REF)." >&2
Tff7b72echo "For workflow_dispatch, select the tag under 'Use workflow from'." >&2
Tff7b72exit 1
Tff7b72;;
Tff7b72esac

Tff7b72if [[ "$TAG" =~ ^v([0-9]+\.[0-9]+\.[0-9]+)$ ]]; then
Tff7b72echo "docs_version=${BASH_REMATCH[1]}" >> "$GITHUB_OUTPUT"
Tff7b72echo "is_production=true" >> "$GITHUB_OUTPUT"
Tff7b72echo "Production release: ${BASH_REMATCH[1]} -> / and /v${BASH_REMATCH[1]}/"
Tff7b72elif [[ "$TAG" =~ ^v([0-9]+\.[0-9]+\.[0-9]+-(open|closed)\.[0-9]+)$ ]]; then
Tff7b72echo "docs_version=${BASH_REMATCH[1]}" >> "$GITHUB_OUTPUT"
Tff7b72echo "is_production=false" >> "$GITHUB_OUTPUT"
Tff7b72echo "${BASH_REMATCH[2]}-testing prerelease -> /v${BASH_REMATCH[1]}/ only"
Tff7b72else
Tff7b72echo "Tag '$TAG' is not a publishable docs channel." >&2
Tff7b72echo "Expected vX.Y.Z, vX.Y.Z-open.N or vX.Y.Z-closed.N." >&2
Tff7b72exit 1
Tff7b72fi

Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffGradleTa5d6ff Ta5d6ffSetup
Tff7b72usesTb4b4b4: Ta5d6ff./.github/actions/gradle-setup
Tff7b72withTb4b4b4:
Tff7b72gradle_encryption_keyTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffsecrets.GRADLE_ENCRYPTION_KEYTa5d6ff Ta5d6ff}}
Tff7b72develocity_access_keyTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffsecrets.DEVELOCITY_ACCESS_KEYTa5d6ff Ta5d6ff}}

Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffSetupTa5d6ff Ta5d6ffRuby
Tff7b72usesTb4b4b4: Ta5d6ffruby/setup-ruby@v1
Tff7b72withTb4b4b4:
Tff7b72ruby-versionTb4b4b4: Ta5d6ff'Ta5d6ff4.0.6Ta5d6ff'
Tff7b72bundler-cacheTb4b4b4: Ta5d6fftrue
Tff7b72working-directoryTb4b4b4: Ta5d6ffdocs

T8b949e# Versioned docs (/vX.Y.Z/ or /vX.Y.Z-open.N/) — built for every channel.
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffBuildTa5d6ff Ta5d6ffVersionedTa5d6ff Ta5d6ffDocs
Tff7b72runTb4b4b4: Ta5d6ff./gradlewTa5d6ff Ta5d6ffgenerateDocsBundleTa5d6ff Ta5d6ffvalidateDocsBundleTa5d6ff Ta5d6ffpublishDocsSiteTa5d6ff Ta5d6ff-Pdocs.channel=releaseTa5d6ff Ta5d6ff-Pdocs.version=${{Ta5d6ff Ta5d6ffsteps.version.outputs.docs_versionTa5d6ff Ta5d6ff}}Ta5d6ff Ta5d6ff-Pci=true

T8b949e# Root site (/) — production releases only.
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffBuildTa5d6ff Ta5d6ffRootTa5d6ff Ta5d6ffDocsTa5d6ff Ta5d6ffSite
Tff7b72ifTb4b4b4: Ta5d6ffsteps.version.outputs.is_productionTa5d6ff Ta5d6ff==Ta5d6ff Ta5d6ff'true'
Tff7b72runTb4b4b4: Ta5d6ff./gradlewTa5d6ff Ta5d6ffgenerateDocsBundleTa5d6ff Ta5d6ffpublishDocsSiteTa5d6ff Ta5d6ff-Pdocs.channel=rootTa5d6ff Ta5d6ff-Pci=true

T8b949e# Dokka API reference (/api/) — production releases only.
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffBuildTa5d6ff Ta5d6ffDokkaTa5d6ff Ta5d6ffHTMLTa5d6ff Ta5d6ffdocumentation
Tff7b72ifTb4b4b4: Ta5d6ffsteps.version.outputs.is_productionTa5d6ff Ta5d6ff==Ta5d6ff Ta5d6ff'true'
Tff7b72runTb4b4b4: Ta5d6ff./gradlewTa5d6ff Ta5d6ffdokkaGeneratePublicationHtmlTa5d6ff Ta5d6ff-Dorg.gradle.isolated-projects=falseTa5d6ff Ta5d6ff--no-configuration-cache

Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffCompileTa5d6ff Ta5d6ffJekyllTa5d6ff Ta5d6ffSites
Tff7b72envTb4b4b4:
Tff7b72DOCS_VERSIONTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffsteps.version.outputs.docs_versionTa5d6ff Ta5d6ff}}
Tff7b72IS_PRODUCTIONTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffsteps.version.outputs.is_productionTa5d6ff Ta5d6ff}}
Tff7b72runTb4b4b4: Tb4b4b4|
Tff7b72set -euo pipefail
Tff7b72# Versioned site
Tff7b72BUNDLE_GEMFILE=docs/Gemfile bundle exec jekyll build \
Tff7b72--source "build/_site/v${DOCS_VERSION}" \
Tff7b72--destination build/jekyll_release \
Tff7b72--baseurl "/${{ github.event.repository.name }}/v${DOCS_VERSION}"

Tff7b72# Move the versioned source out of the root source tree so the root
Tff7b72# build below doesn't try to nest it.
Tff7b72mv "build/_site/v${DOCS_VERSION}" build/v_temp

Tff7b72if [ "$IS_PRODUCTION" = "true" ]; then
Tff7b72BUNDLE_GEMFILE=docs/Gemfile bundle exec jekyll build \
Tff7b72--source build/_site \
Tff7b72--destination build/jekyll_root \
Tff7b72--baseurl "/${{ github.event.repository.name }}"
Tff7b72fi

Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffStageTa5d6ff Ta5d6ffchannels
Tff7b72idTb4b4b4: Ta5d6ffstage
Tff7b72envTb4b4b4:
Tff7b72DOCS_VERSIONTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffsteps.version.outputs.docs_versionTa5d6ff Ta5d6ff}}
Tff7b72IS_PRODUCTIONTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffsteps.version.outputs.is_productionTa5d6ff Ta5d6ff}}
Tff7b72runTb4b4b4: Tb4b4b4|
Tff7b72set -euo pipefail
Tff7b72mkdir -p build/pages_staging
Tff7b72cp -r build/jekyll_release "build/pages_staging/v${DOCS_VERSION}"
Tff7b72channels="v${DOCS_VERSION}"
Tff7b72if [ "$IS_PRODUCTION" = "true" ]; then
Tff7b72cp -r build/jekyll_root build/pages_staging/root
Tff7b72cp -r build/dokka/html build/pages_staging/api
Tff7b72channels="root $channels api"
Tff7b72fi
Tff7b72echo "channels=$channels" >> "$GITHUB_OUTPUT"

Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffPublishTa5d6ff Ta5d6fftoTa5d6ff Ta5d6ffgh-pages
Tff7b72runTb4b4b4: Ta5d6ffscripts/docs/publish-to-gh-pages.shTa5d6ff Ta5d6ffbuild/pages_stagingTa5d6ff Ta5d6ff${{Ta5d6ff Ta5d6ffsteps.stage.outputs.channelsTa5d6ff Ta5d6ff}}

Served by rngit 1.5.2 - Generated in 0.08s